package qc.module.ehs.api.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import qc.common.core.exception.QCPromptException;
import qc.module.ehs.dto.unitcategory.TplUnitCategoryDto;
import qc.module.ehs.dto.unitcategory.TplUnitCategoryTreeTableItemDto;
import qc.module.ehs.service.EhsTplUnitcategoryService;

import java.util.List;

/**
 * EhsTplUnitcategoryController
 *
 * @author QuCheng Tech
 * @create 2024/5/22
 */
@RestController
@RequestMapping("/unitcategory")
public class UnitcategoryController {
    
    @Autowired
    private EhsTplUnitcategoryService service;

    /**
     * 获取单元分类，以TreeTable树型形式返回数据
     * 
     * @return List<TplUnitCategoryTreeTableItemDto>
     * @author QuCheng Tech
     * @since 2024/5/22
     */
    @GetMapping("/treetable")
    public List<TplUnitCategoryTreeTableItemDto> queryTreeTable(){
        return service.queryTreeTable();
    }

    /**
     * 获取指定 - 同时支持@RequestParam和@PathVariable方式
     * 
     * @param id 单元分类代码
     * @return TplUnitCategoryDto
     * @author QuCheng Tech
     * @since 2024/5/22
     */
    @GetMapping("/get")
    public TplUnitCategoryDto getByParam(@RequestParam String id) throws QCPromptException {
        return service.get(id);
    }

    /**
     * 获取指定 - 同时支持@RequestParam和@PathVariable方式
     * 
     * @param id 单元分类代码
     * @return TplUnitCategoryDto
     * @author QuCheng Tech
     * @since 2024/5/22
     */
    @GetMapping("/get/{id}")
    public TplUnitCategoryDto getByPath(@PathVariable String id) throws QCPromptException {
        return service.get(id);
    }

    /**
     * 新增指定单元分类
     *
     * @param dto 单元分类信息
     * @return 成功返回null，失败返回错误或提示信息
     * @author QuCheng Tech
     * @since 2024/5/22
     */
    @RequestMapping(value = "/add",method = {RequestMethod.GET,RequestMethod.POST})
    public String add(@RequestBody TplUnitCategoryDto dto){
        return service.add(dto);
    }

    /**
     * 修改指定单元分类
     *
     * @param dto 单元分类信息
     * @return 成功返回null，失败返回错误或提示信息
     * @author QuCheng Tech
     * @since 2024/5/22
     */
    @RequestMapping(value = "/update",method = {RequestMethod.POST,RequestMethod.PUT})
    public String update(@RequestBody TplUnitCategoryDto dto){
        return service.update(dto);
    }

    /**
     * 删除指定分类单元 - 同时支持@RequestParam和@PathVariable方式
     *
     * @param id 单元分类代码
     * @return 成功返回null，失败返回错误或提示信息
     * @author QuCheng Tech
     * @since 2024/5/22
     */
    @DeleteMapping("/delete")
    public String deleteByParam(@RequestParam String id){
        return service.delete(id);
    }

    /**
     * 删除指定分类单元 - 同时支持@RequestParam和@PathVariable方式
     *
     * @param id 单元分类代码
     * @return 成功返回null，失败返回错误或提示信息
     * @author QuCheng Tech
     * @since 2024/5/22
     */
    @DeleteMapping("/delete/{id}")
    public String deleteByPath(@PathVariable String id){
        return service.delete(id);
    }
}
